package com.jzxiang.pickerview.data.source;

import com.jzxiang.pickerview.data.WheelCalendar;

/**
 * TimeDataSource
 *
 * @since 2021-07-16
 */
public interface TimeDataSource {
    /**
     * getMinYear
     *
     * @return int
     */
    int getMinYear();
    /**
     * getMaxYear
     *
     * @return int
     */
    int getMaxYear();

    /**
     * getMinMonth
     *
     * @param currentYear currentYear
     * @return int
     */
    int getMinMonth(int currentYear);

    /**
     * getMaxMonth
     *
     * @param currentYear currentYear
     * @return int
     */
    int getMaxMonth(int currentYear);

    /**
     * getMinDay
     *
     * @param year year
     * @param month month
     * @return int
     */
    int getMinDay(int year, int month);

    /**
     * getMaxDay
     *
     * @param year year
     * @param month month
     * @return int
     */
    int getMaxDay(int year, int month);

    /**
     * getMinHour
     *
     * @param year year
     * @param month month
     * @param day day
     * @return int
     */
    int getMinHour(int year, int month, int day);

    /**
     * getMaxHour
     *
     * @param year year
     * @param month month
     * @param day day
     * @return int
     */
    int getMaxHour(int year, int month, int day);

    /**
     * getMinMinute
     *
     * @param year year
     * @param month month
     * @param day day
     * @param hour hour
     * @return int
     */
    int getMinMinute(int year, int month, int day, int hour);

    /**
     * getMaxMinute
     *
     * @param year year
     * @param month month
     * @param day day
     * @param hour hour
     * @return int
     */
    int getMaxMinute(int year, int month, int day, int hour);

    /**
     * isMinYear
     *
     * @param year year
     * @return boolean
     */
    boolean isMinYear(int year);

    /**
     * isMinMonth
     *
     * @param year year
     * @param month month
     * @return boolean
     */
    boolean isMinMonth(int year, int month);

    /**
     * isMinDay
     *
     * @param year year
     * @param month month
     * @param day day
     * @return boolean
     */
    boolean isMinDay(int year, int month, int day);

    /**
     * isMinHour
     *
     * @param year year
     * @param month month
     * @param day day
     * @param hour hour
     * @return boolean
     */
    boolean isMinHour(int year, int month, int day, int hour);

    /**
     * getDefaultCalendar
     *
     * @return WheelCalendar
     */
    WheelCalendar getDefaultCalendar();

}
